1. Field of the Invention
The present invention is directed to an improvement in computing systems and in particular to the automation and isolation of software component testing.
2. Description of the Related Art
In the development of large computer systems, modules or components are defined and implemented by computer code. The use of object oriented programming languages such as Java and C++ and the adoption of component environments that support the CORBA, Microsoft COM or Java Bean architectures has resulted in component-based system development becoming more common. Java is a trademark of Sun Microsystems.
As such component development becomes more prevalent, it is becoming increasingly important to be able to test and validate such software components at an API (interface) level. Certain testing of components may be, and frequently is, carried out by incorporating test code (also referred to as instrumentation or instrumentation code) in the module or component being tested. However, for the testing of a component to be as rigorous as possible and to provide the most reliable results, it is desirable to test component code at the API level without special testing code being embedded in the component. Such software, without added testing code, is known as “production level code” or “production binaries”.
Testing of production level code is popular for graphical user interface (GUI) testing. Software to carry out such testing of graphical interfaces is known as GUI capture and playback tooling. This type of prior art system records user interaction with the GUI (such as mouse clicks and keystrokes) and makes the recorded user-GUI interaction available for repeated test cases. Examples of commercially available systems which include GUI capture and playback tooling are the WinRunner™ product from Mercury Interactive Corp., the Silktest™ product from Segue Software Inc. and the Rational Robot™ product from Rational Software Corp.
The GUI capture and playback tooling found in prior art systems is not typically adapted to test API interfaces that are not graphical in nature. Certain prior art systems have provided for capture and playback tooling for non-graphical interfaces but such systems have built the capture functionality into the test case component of the system. Such an approach is relatively inflexible in that reuse and modification of the test case is cumbersome. The test case is tied closely to the component being tested in such systems.
Such non-graphical interfaces are important in distributed systems found in component-based architectures. As a result, a system to capture API interface interaction, that does not include code within the components or modules being tested, is desirable.
Furthermore, where extensive testing is carried out on software components, it is desirable to have testing tooling that will permit tests to be developed with a minimum of direct developer input. It is therefore desirable to have a test system that will automate the process to be carried out in capturing component API interaction in a test system.